/**
 * 下载方法
 * Copyright (c) 2023 dfec
 */

export default {
    /**
     * 下载 Excel 方法
     * @param {Blob} data
     * @param {String} fileName
     */
    excel(data, fileName) {
        this.download(data, fileName, 'application/vnd.ms-excel')
    },

    /**
     * 下载 Word 方法
     * @param {Blob} data
     * @param {String} fileName
     */
    word(data, fileName) {
        this.download(data, fileName, 'application/msword')
    },

    /**
     * 下载 Zip 方法
     * @param {Blob} data
     * @param {String} fileName
     */
    zip(data, fileName) {
        this.download(data, fileName, 'application/zip')
    },

    /**
     * 下载 Html 方法
     * @param {Blob} data
     * @param {String} fileName
     */
    html(data, fileName) {
        this.download(data, fileName, 'text/html')
    },

    /**
     * 下载 Markdown 方法
     * @param {Blob} data
     * @param {String} fileName
     */
    markdown(data, fileName) {
        this.download(data, fileName, 'text/markdown')
    },

    /**
     * 通用下载方法
     * @param {*} data
     * @param {String} fileName
     * @param {String} mineType
     */
    download(data, fileName, mineType) {
        // 创建 blob
        let blob = new Blob([data], { type: mineType })
        // 创建 href 超链接，点击进行下载
        window.URL = window.URL || window.webkitURL
        let href = URL.createObjectURL(blob)
        let downA = document.createElement('a')
        downA.href = href
        downA.download = fileName
        downA.click()
        // 销毁超连接
        window.URL.revokeObjectURL(href)
    }
}
